/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//		File Name		:		CParticle.h
//
//		Author			:		Kevin Jordan
//
//		Purpose			:		A header for all functions and members of the Particle class
//
//		Dates			:		Written( Feb 24, 2011 ) by Kevin Jordan		LastUpdate( Feb 24, 2011  ) by Kevin Jordan 
//	
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef CPARTICLE_H_
#define CPARTICLE_H_
#include <windows.h>

#include <string>

class CParticle
{

private:

	float m_fPosX;
	float m_fPosY;
	float m_fVelX;
	float m_fVelY;
	float m_fAcelX;
	float m_fAcelY;

	DWORD StartColor;
	DWORD EndColor;

	float m_fStartScale;
	float m_fEndScale;
	float m_fRotation;

	int ImageID;
	float m_nLife;

	const char* filename;
	DWORD m_dwcurColor;
	float	m_fCurScale;
	int		m_nCurrentLife;
	//float fColorRateOfChange;

	CParticle( const CParticle& copy);
	CParticle& operator=(const CParticle& assign);

public:

	CParticle();
	CParticle( float PosX, float PosY, float VelX, float VelY, float AcelX, float AcelY,
				DWORD StartColor, DWORD EndColor, float StartScale, float EndScale, float Rotation, 
				int ImageID, int Life );
	~CParticle();

	////////////////////////////////////////////
	////////////////////////////////////////////
	//	Accessors & Modifiers
	////////////////////////////////////////////
	////////////////////////////////////////////
	//	Accessors
	////////////////////////////////////////////
	float GetPosX()				{return m_fPosX;}
	float GetPosY()				{return m_fPosY;}
	float GetVelX()				{return m_fVelX;}
	float GetVelY()				{return m_fVelY;}
	float GetAcelX()			{return m_fAcelX;}
	float GetAcelY()			{return m_fAcelY;}

	DWORD GetStartColor()		{return StartColor;}
	DWORD GetEndColor()			{return EndColor;}

	float GetStartScale()		{return m_fStartScale;}
	float GetEndScale()		{return m_fEndScale;}
	float GetRotation()			{return m_fRotation;}
	int	  GetImageID()			{return ImageID;}
	float GetLife()				{return m_nLife;}
	DWORD GetCurColor()			{return m_dwcurColor;}
	float GetCurScale()			{return m_fCurScale;}
	const char* GetFilename()	{return filename;}

	///////////////////////////////////////////////////
	///////////////////////////////////////////////////
	//	Modifiers
	///////////////////////////////////////////////////
	///////////////////////////////////////////////////
	void	SetPosX(float NewPosX)				{m_fPosX = NewPosX;}
	void	SetPosY(float NewPosY)				{m_fPosY = NewPosY;}
	void	SetVelX(float NewVelX)				{m_fVelX = NewVelX;}
	void	SetVelY(float NewVelY)				{m_fVelY = NewVelY;}
	void	SetAcelX(float NewAcelX)			{m_fAcelX = NewAcelX;}
	void	SetAcelY(float NewAcelY)			{m_fAcelY = NewAcelY;}

	void	SetStartColor(DWORD NewStartColor)	{StartColor = NewStartColor;}
	void	SetEndColor(DWORD NewEndColor)		{EndColor = NewEndColor;}

	void	SetStartScale(float NewStartScale)	{m_fStartScale = NewStartScale;}
	void	SetEndScale(float NewEndScale)		{m_fEndScale = NewEndScale;}
	void	SetRotation(float NewRotation)		{m_fRotation = NewRotation;}
	void	SetImageID(int NewImageID)			{ImageID = NewImageID;}
	void	SetLife(float NewLife)				{m_nLife = NewLife;}
	void	SetCurColor(DWORD NewCurColor)		{m_dwcurColor = NewCurColor;}
	void	SetCurScale(float NewCurScale)		{m_fCurScale = NewCurScale;}

	void	SetFilename(const char* NewFilename){filename = NewFilename;}

	void Render();
	void Update( float fElapsedTime );
};
#endif